package com.ciwong.mobilelib.utils;

import android.os.Build;
import android.text.TextUtils;

/**
 * Created by Administrator on 2017/8/31.
 */

public class OSUtils {
	//MIUI标识
	private static final String KEY_MIUI_VERSION_CODE     = "ro.miui.ui.version.code";
	private static final String KEY_MIUI_VERSION_NAME     = "ro.miui.ui.version.name";
	private static final String KEY_MIUI_INTERNAL_STORAGE = "ro.miui.internal.storage";

	//EMUI标识
	private static final String KEY_EMUI_VERSION_CODE          = "ro.build.version.emui";
	private static final String KEY_EMUI_API_LEVEL             = "ro.build.hw_emui_api_level";
	private static final String KEY_EMUI_CONFIG_HW_SYS_VERSION = "ro.confg.hw_systemversion";

	//Flyme标识
	private static final String KEY_FLYME_ID_FALG_KEY           = "ro.build.display.id";
	private static final String KEY_FLYME_ID_FALG_VALUE_KEYWORD = "Flyme";
	private static final String KEY_FLYME_ICON_FALG             = "persist.sys.use.flyme.icon";
	private static final String KEY_FLYME_SETUP_FALG            = "ro.meizu.setupwizard.flyme";
	private static final String KEY_FLYME_PUBLISH_FALG          = "ro.flyme.published";

	/**
	 * @param
	 * @return ROM_TYPE ROM类型的枚举
	 * @description获取ROM类型: MIUI_ROM, FLYME_ROM, EMUI_ROM, OTHER_ROM
	 */

	public static int getRomType() {
		int rom_type = RomType.OS_TYPE_OTHER;
		{
			try {
				BuildProperties buildProperties = BuildProperties.getInstance();

				if (buildProperties.containsKey(KEY_EMUI_VERSION_CODE) || buildProperties.containsKey(KEY_EMUI_API_LEVEL) || buildProperties.containsKey(KEY_MIUI_INTERNAL_STORAGE)) {
					return RomType.OS_TYPE_EMUI;
				}
				if (buildProperties.containsKey(KEY_MIUI_VERSION_CODE) || buildProperties.containsKey(KEY_MIUI_VERSION_NAME) || buildProperties.containsKey(KEY_MIUI_VERSION_NAME)) {
					return RomType.OS_TYPE_MIUI;
				}
				if (buildProperties.containsKey(KEY_FLYME_ICON_FALG) || buildProperties.containsKey(KEY_FLYME_SETUP_FALG) || buildProperties.containsKey(KEY_FLYME_PUBLISH_FALG)) {
					return RomType.OS_TYPE_FLYME;
				}
				if (buildProperties.containsKey(KEY_FLYME_ID_FALG_KEY)) {
					String romName = buildProperties.getProperty(KEY_FLYME_ID_FALG_KEY);
					if (!TextUtils.isEmpty(romName) && romName.contains(KEY_FLYME_ID_FALG_VALUE_KEYWORD)) {
						return RomType.OS_TYPE_FLYME;
					}
				}
			} catch (Exception e) {
				rom_type = judgeByMANUFACTURER();
			}

		}
		return rom_type;
	}

	public static class RomType {
		public static final int OS_TYPE_FLYME = 0;

		public static final int OS_TYPE_MIUI = 1;

		public static final int OS_TYPE_EMUI = 2;

		public static final int OS_TYPE_OTHER = 3;
	}
	private static final String MARK = Build.MANUFACTURER.toLowerCase();
	public static int judgeByMANUFACTURER(){
		int rom_type = RomType.OS_TYPE_OTHER;
		if(TextUtils.isEmpty(MARK)){
			return rom_type;
		}
		if (MARK.contains("huawei")) {
			rom_type= RomType.OS_TYPE_EMUI;
		} else if (MARK.contains("xiaomi")) {
			rom_type= RomType.OS_TYPE_MIUI;
		} else if (MARK.contains("oppo")) {
			rom_type= RomType.OS_TYPE_MIUI;
		} else if (MARK.contains("vivo")) {
		} else if (MARK.contains("samsung")) {
		} else if (MARK.contains("meizu")) {
			rom_type= RomType.OS_TYPE_FLYME;
		} else if (MARK.contains("smartisan")) {
		} else {
			rom_type= RomType.OS_TYPE_MIUI;
		}
		return rom_type;
	}
}
